/*
* ============================================================================
*  Name        : example_004.h
*  Part of     : Finite state machine examples
*  Description : Class definition
*  Version     : %version: %
*  
*
* ============================================================================
*/
#if !defined(  __sm_example_004_h__ )
#define __sm_example_004_h__

#include <sea_statemachine>

// sea:: State Event Action namespace
using namespace sea;

/**
 * @file example_004.h
 * @brief 
 * Event handler example. Empty state machine acting on external events.
 *
 * @ingroup StateMachineExamples
 *
 */
namespace sea_examples
{
    /**
     * @class EventHandler
     * @brief \b Examples: Simple Event handler class to demonstrate state-less use case
     *
     * @ingroup StateMachineExamples
     */
    class EventHandler : public StateMachine
    {
    public:
        EventHandler( );

        EVENT_EXT( EventHandler, Ev_Ext_say_hello );
        EVENT_EXT( EventHandler, Ev_Ext_say_sea );
        EVENT_EXT( EventHandler, Ev_Ext_say_world );

        ACT( EventHandler, say_hello );
        ACT( EventHandler, say_sea );
        ACT( EventHandler, say_world );
    };

    void launch_example_004( );
    void launch_example_0041( );
}

#endif
